package grupobbva.pe.operhc.dao;

import grupobbva.pe.operhc.domain.Canal;
import grupobbva.pe.operhc.domain.Cliente;
import grupobbva.pe.operhc.domain.ConfigProducto;
import grupobbva.pe.operhc.domain.Contrato;
import grupobbva.pe.operhc.domain.DatoImpresion;
import grupobbva.pe.operhc.domain.DetalleCarrito;
import grupobbva.pe.operhc.domain.Disclamer;
import grupobbva.pe.operhc.domain.EmisoraConfigProd;
import grupobbva.pe.operhc.domain.Ingreso;
import grupobbva.pe.operhc.domain.Mensaje;
import grupobbva.pe.operhc.domain.Parametro;
import grupobbva.pe.operhc.domain.PerfilRol;
import grupobbva.pe.operhc.domain.Plazo;
import grupobbva.pe.operhc.domain.Producto;
import grupobbva.pe.operhc.domain.ProductoPlazo;
import grupobbva.pe.operhc.domain.SegParametros;
import grupobbva.pe.operhc.domain.SegUsuario;
import grupobbva.pe.operhc.domain.Segmento;
import grupobbva.pe.operhc.domain.SegmentoConfigProd;
import grupobbva.pe.operhc.domain.SubCanal;
import grupobbva.pe.operhc.domain.SubProducto;
import grupobbva.pe.operhc.domain.Tabla;
import grupobbva.pe.operhc.domain.TipoParametro;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface ParametroDAO {

	/**********************************************
	 * @author frank.ayala
	 * INI MANTENIMIENTOS
	 **********************************************/
	
	public List<SegUsuario> getAllUsers();
	public List<SegParametros> getListOptions();
	public SegUsuario getUserByCode(String id, String nivel);
	public List<SegParametros> getListUserOptions(String id);
	public void deleteUsersByCode(String concatIds) throws Exception;
	public boolean verifyUserUniquePK(String codigo);
	public void saveUser(SegUsuario bean, boolean isNew) throws Exception;
	public List<Parametro> getAllParameters();
	public List<Ingreso> getAllIncome();
	public List<SubProducto> getAllSubproductos(String codConfigProducto, String codProductoPadre);
	public void deleteSubProductsByCode(String codes, String codProductoPadre, String codConfigProducto) throws Exception;
	public List<Producto> getAllProducts();
	public Producto getProductByCode(String codProducto, String nivel);
	public boolean saveAdminParameters(String strBuro, String strClasifbbva,
	String strValse, String strClasifsf, String strValrp, String allSegmentos);
	public Map<String, String> saveAdminIncomes(List<Ingreso> listIngreso);
	public void deleteProductsByCode(String codes) throws Exception;
	public Map<String, String> saveProduct(String codProductoHdn, String codProducto,
			String desProducto, String stMultCont, String stNivela, String familia, String stContrata, String stSimula,String editTasa,String editPlazo);
	public List<ConfigProducto> getAllConfigProducts(String codProductoPadre);
	public ConfigProducto getConfigProductByCode(String codConfigProducto, String codProductoPadre);
	public Map<String, String> saveConfigProduct(String codConfigProductoHdn,
			String codConfigProducto, String desConfigProducto,
			String codProductoPadre, Long valPrioridad);
	public void deleteConfigProductsByCode(String codes, String codProductoPadre) throws Exception;
	public List<EmisoraConfigProd> getAllEmisorasConfigProd(
			String codConfigProducto, String codProductoPadre);
	public List<SegmentoConfigProd> getAllSegmentosConfigProd(
			String codConfigProducto, String codProductoPadre);
	public Map<String, String> saveEmisora(String codConfigProductoHdn,
			String codEmisoraHdn, String codEmisora, String desEmisora, String seleccionEmisora);
	public Map<String, String> saveSegmento(String codConfigProductoHdn,
			String codSegmentoHdn, String codSegmento, String desSegmento, String seleccionSegmento,String seleccionSegmentoReevalua);
	public void deleteEmisorasByCode(String codes, String codProductoPadre,
			String codConfigProducto) throws Exception;
	public void deleteSegmentosByCode(String codes, String codProductoPadre,
			String codConfigProducto) throws Exception;
	public Map<String, String> saveSubProduct(String codConfigProductoHdn, String codSubProducto,
			String desSubProducto, String valTasa, String valTipo, String valBin, 
			BigDecimal rangoMin, BigDecimal rangoMax, Long idSubProducto, String divisa,BigDecimal tasaMin, BigDecimal tasaMax);
	public void saveConfigProductDetail(String stRiesgo, String codConfigProducto, String allEmisoras, String allSegmentos);
	public List<SubProducto> getAllStructureSubProducts(String codProducto, Cliente clienteSession);
	public List<Plazo> getAllPlazos();
	public Map<String, String> savePlazo(String codPlazoHdn, String codPlazo,
			String desPlazo);
	public void deletePlazosByCode(String codes) throws Exception;
	public List<ProductoPlazo> getAllConfigProductPlazo(String codProductoPadre);
	public List<Producto> getAllStructureProducts(List<Producto> listProductosCliente, String familiaMostrar);
	public String getValParameterByCode(String codParametro, String codTipoParametro);
	public Map<String, String> saveCheckEmisoras(String selEmisoras, String codConfigProducto);
	public Map<String, String> saveCheckSegmentos(String selSegmentos, String codConfigProducto);
	public Map<String, String> saveCheckSegmentosReeval(String selSegmentosReeval, String codConfigProducto);
	public Map<String, String> saveCheckProducts(String selNivela,
			String selMultCont, String selContrata, String selSimula,String ediTasa,String ediPlazo);
	public Map<String, String> saveCheckProductoPlazos(String selPlazo,
			String codProductoPadre);
	public void saveAllCheckEmisoraSegmento(String allEmisoras,
			String allSegmentos, String codConfigProducto, String codProductoPadre);
	public List<Contrato> getProductExtraInfoByContrato(List<Contrato> list);
	public Map<String, String> getMapParametersByParameterType(String codTipoParametro);
	public List<Segmento> getAllSegmentosAdmin();
	public Map<String, String> saveSegmentoAdmin(String codSegmentoHdn,
			String codSegmento, String desSegmento, String seleccionSegmento,String seleccionSegmentoReeval);
	public void deleteSegmentosAdminByCode(String codes) throws Exception;
	public void saveAllCheckSegmentoAdmin();
	public Map<String, String> saveCheckSegmentosAdmin(String selSegmentos);
	public Map<String, String> saveCheckSegmentosReevalAdmin(String selSegmentos);
	public String getValSegmentoByCode(String segmento);
	public BigDecimal getQuotaListIncomes(BigDecimal ingresoTotal);
	public List<Canal> getAllCanales();
	public Map<String, String> saveCanal(String codCanalHdn, String codCanal, String desCanal);
	public void deleteCanalesByCode(String codes) throws Exception;
	public List<SubCanal> getAllSubCanales(String codCanal);
	public Map<String, String> saveSubCanal(String codSubCanalHdn,
			String codSubCanal, String desSubCanal, String codCanal);
	public void deleteSubCanalesByCode(String codes, String codCanal);
	public Canal getCanalByCode(String codCanal);
	public SubCanal getSubCanalByCode(String codSubCanal, String codCanal);
	public Parametro getParameterByCodes(String codParametro, String codTipoParametro);
	public List<Parametro> getParametersByParameterType(String codTipoParametro);
	public List<TipoParametro> getAllTypeParameters();
	public void deleteParametersByCode(String codes, String codTipoParametro)throws Exception;
	public boolean verifyParameterUniquePK(String codParametro, String codTipoParametroPadre);
	public void saveParameter(Parametro bean, boolean isNew) throws Exception;

	/**********************************************
	 * @author frank.ayala
	 * FIN MANTENIMIENTOS
	 **********************************************/
	public Segmento getSegmentoByCode(String codSegmento);
	
	//ini MCG20140716
	public List<Mensaje> getAllMensaje();
	public Map<String, String> saveMensaje(String codMensajeHdn, String codMensaje,
			String desMensaje,String activo);
	public void deleteMensajeByCode(String codes) throws Exception;
	public Mensaje getMensajeByCode(String codMensaje) throws Exception;
	
	public List<Tabla> getListRoles();
	public List<Tabla> getListPerfilRoles(String id);
	
	public List<Tabla> getListPerilesLocal();
	public void savePerfilRol(PerfilRol bean) throws Exception;
	
	
	//fin MCG20140716
	//ini MCG20151125
	public List<DetalleCarrito> getProductExtraInfoByDetalleCarrito(List<DetalleCarrito> list);
	
	//fin MCG20141125
	//Ini MCG20150202
	public DatoImpresion getDataImpresionByCode(String numeroContrato,String numeroSolicitud,String tipoCodigo);
	public Map<String, String> saveDatoImpresion(DatoImpresion odatoImpresion);
	public Map<String, String> updateDatoImpresion(DatoImpresion odatoImpresion);
	//fin MCG20150202
	
	public Disclamer getDisclamer(String tipoDocumento, String numeroDocumento);
	
}